Aspects of the present invention are directed to a method and a system for virtual machine CPU demand estimation for autonomous resource and power management.
In a virtualized environment, the physical hardware is decoupled from the operating system and application software via a hypervisor layer. In such environments, resource consolidation is a commonly applied technology that is enabled by computing hardware virtualization. The hypervisor helps multiple virtual machines (VMs), which may run different operating systems on different virtual hardware, share the same physical resources.
Current virtualization technologies incorporate management schemes that present a unified resource view for multiple virtualized hosts and provide methods for dynamic resource balancing among these hosts by, e.g., migrating VMs between resources. Such resource balancing requires explicit knowledge of each VM's resource demand to commit resources efficiently. One key challenge in these processes is the determination of the actual desired resource demand of each VM. In a case where a host is undercommitted and has more resources than the total demand produced by its occupant VMs, each VM's resource usage tracks demand closely. However, in the case where a host is overcommitted and had less resources than the total demand produced by its occupant VMs, VM resource usage deviates from demand. This latter case is far more important in terms of resource balancing and may lead to VM performance degradation. In overcommitment, the existing solutions have drawbacks in that they either use resource usage, such as each VM's CPU usage percent, as an indicator of demand or they may rely on legacy implementations tightly coupled with the underlying virtualization technology for specific implementations.
Generally, it is seen that some of the existing techniques either explicitly rely on CPU usage or introduce disruptive hooks to the overlaying virtualized applications for resource management and capacity planning. Some of these proposed techniques argue for the necessity of application-level intervention to distinguish demand from usage. While other work also argues that demand does not necessarily follow usage in both native and virtualized systems and points out some of the indicators of resource contention, they do not provide an estimation technique. Other work that proposes virtual machine performance modeling and estimation techniques rely on tracking virtual machine resource usage/demand and develop forecasting or application-level performance modeling techniques. These studies are not applicable for arbitrary black-box virtualization management (that is, virtualization management done without any monitoring hooks inside the VMs, where VMs are treated as black boxes) cases, and do not provide a general representation of actual VM resource demand. Some solutions aim to address the problem of identifying the resource requirements of a VM. These solutions rely on determining resource needs from within a virtual machine by inspecting application and operating system behavior within the VM to track certain indicative behavior such as detecting the occurrences of an idle loop within a virtual machine. In an approach for hypervisor load balancing, information about the VM CPU load is determined based on its interrupt response time. While this technique provides indirect measures on whether a VM is receiving its resource requirements, it is generally intrusive and does not provide a direct measure of a VM's actual resource demand.